<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>JCSDK C++ API Reference: JCCall类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">JCSDK C++ API Reference
   &#160;<span id="projectnumber">2.3.3</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pub-attribs">Public 属性</a> &#124;
<a href="class_j_c_call-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">JCCall类 参考<span class="mlabels"><span class="mlabel">abstract</span></span><div class="ingroups"><a class="el" href="group___xE4_xB8_x80_xE5_xAF_xB9_xE4_xB8_x80_xE9_x80_x9A_xE8_xAF_x9D_xE6_xA8_xA1_xE5_x9D_x97.html">一对一通话模块</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="_j_c_call_8h_source.html">JCCall.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a6ba5c96565197a35b847a5d8452cbc66"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#a6ba5c96565197a35b847a5d8452cbc66">call</a> (const char *userId, bool video, <a class="el" href="class_j_c_call_param.html">JCCallParam</a> *callParam)=0</td></tr>
<tr class="separator:a6ba5c96565197a35b847a5d8452cbc66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a168fd884512bfd5451ffa5fac83c598b"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#a168fd884512bfd5451ffa5fac83c598b">term</a> (<a class="el" href="class_j_c_call_item.html">JCCallItem</a> *item, <a class="el" href="group___xE4_xB8_x80_xE5_xAF_xB9_xE4_xB8_x80_xE9_x80_x9A_xE8_xAF_x9D_xE6_xA8_xA1_xE5_x9D_x97.html#gae957ca110a61bcd44a7fd33cda162887">JCCallReason</a> reason, const char *description)=0</td></tr>
<tr class="separator:a168fd884512bfd5451ffa5fac83c598b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e44cef3051dba33a600042c7a5bf987"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#a8e44cef3051dba33a600042c7a5bf987">answer</a> (<a class="el" href="class_j_c_call_item.html">JCCallItem</a> *item, bool video)=0</td></tr>
<tr class="separator:a8e44cef3051dba33a600042c7a5bf987"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62d7c7454fae84422579e3a6275af243"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#a62d7c7454fae84422579e3a6275af243">mute</a> (<a class="el" href="class_j_c_call_item.html">JCCallItem</a> *item)=0</td></tr>
<tr class="separator:a62d7c7454fae84422579e3a6275af243"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae536642d3d5c785c2ce7d9275f8653a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#aae536642d3d5c785c2ce7d9275f8653a">hold</a> (<a class="el" href="class_j_c_call_item.html">JCCallItem</a> *item)=0</td></tr>
<tr class="separator:aae536642d3d5c785c2ce7d9275f8653a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058fb76428f0a77f4bbbb8670eec2868"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#a058fb76428f0a77f4bbbb8670eec2868">audioRecord</a> (<a class="el" href="class_j_c_call_item.html">JCCallItem</a> *item, bool enable, const char *filePath)=0</td></tr>
<tr class="separator:a058fb76428f0a77f4bbbb8670eec2868"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21823c0309710331f4cad2aee7429c37"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#a21823c0309710331f4cad2aee7429c37">videoRecord</a> (<a class="el" href="class_j_c_call_item.html">JCCallItem</a> *item, bool enable, bool remote, int width, int height, const char *filePath, bool bothAudio)=0</td></tr>
<tr class="separator:a21823c0309710331f4cad2aee7429c37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae45d0744f3df39cc2c6dc3bb00bb7354"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#ae45d0744f3df39cc2c6dc3bb00bb7354">becomeActive</a> (<a class="el" href="class_j_c_call_item.html">JCCallItem</a> *item)=0</td></tr>
<tr class="separator:ae45d0744f3df39cc2c6dc3bb00bb7354"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcd6dd97b6737909ae0348a0e714d754"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#adcd6dd97b6737909ae0348a0e714d754">enableUploadVideoStream</a> (<a class="el" href="class_j_c_call_item.html">JCCallItem</a> *item)=0</td></tr>
<tr class="separator:adcd6dd97b6737909ae0348a0e714d754"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34e8adf7b93e4943c83b39de5f5675bf"><td class="memItemLeft" align="right" valign="top">virtual std::list&lt; <a class="el" href="class_j_c_call_item.html">JCCallItem</a> * &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#a34e8adf7b93e4943c83b39de5f5675bf">getCallItems</a> ()=0</td></tr>
<tr class="separator:a34e8adf7b93e4943c83b39de5f5675bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b5e8afc43bd12f877e37a97fec2ff7a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_j_c_call_item.html">JCCallItem</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#a4b5e8afc43bd12f877e37a97fec2ff7a">getActiveCallItem</a> ()=0</td></tr>
<tr class="separator:a4b5e8afc43bd12f877e37a97fec2ff7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94e37abb045b901e1703b7534f4cc379"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#a94e37abb045b901e1703b7534f4cc379">sendMessage</a> (<a class="el" href="class_j_c_call_item.html">JCCallItem</a> *item, const char *type, const char *content)=0</td></tr>
<tr class="separator:a94e37abb045b901e1703b7534f4cc379"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5de3fe2c6d7f16d95e4c79d7389b133"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#ae5de3fe2c6d7f16d95e4c79d7389b133">getStatistics</a> ()=0</td></tr>
<tr class="separator:ae5de3fe2c6d7f16d95e4c79d7389b133"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca5e69754bbc89fa94916dcfebfe084c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#aca5e69754bbc89fa94916dcfebfe084c">updateMediaConfig</a> (<a class="el" href="class_j_c_call_media_config.html">JCCallMediaConfig</a> mediaConfig)=0</td></tr>
<tr class="separator:aca5e69754bbc89fa94916dcfebfe084c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6392b58272a396a10d3d857f4704d6a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_j_c_call_media_config.html">JCCallMediaConfig</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#aa6392b58272a396a10d3d857f4704d6a">getMediaConfig</a> ()=0</td></tr>
<tr class="separator:aa6392b58272a396a10d3d857f4704d6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1dd4d26b9ba6685b57dcbcf698a021c6"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#a1dd4d26b9ba6685b57dcbcf698a021c6">sendDtmf</a> (<a class="el" href="class_j_c_call_item.html">JCCallItem</a> *item, <a class="el" href="group___xE4_xB8_x80_xE5_xAF_xB9_xE4_xB8_x80_xE9_x80_x9A_xE8_xAF_x9D_xE6_xA8_xA1_xE5_x9D_x97.html#ga78f6d8931af25ea4302fcee98ae292d7">JCCallDtmfValue</a> value)=0</td></tr>
<tr class="separator:a1dd4d26b9ba6685b57dcbcf698a021c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
<tr class="memitem:a769709c95f34898df619db9374fe78c2"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#a769709c95f34898df619db9374fe78c2">maxCallNum</a></td></tr>
<tr class="separator:a769709c95f34898df619db9374fe78c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadc33d7d6a0e672613cb66392a35547d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_j_c_call.html#aadc33d7d6a0e672613cb66392a35547d">termWhenNetDisconnected</a></td></tr>
<tr class="separator:aadc33d7d6a0e672613cb66392a35547d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>用于管理一对一通话 </p>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="a8e44cef3051dba33a600042c7a5bf987"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e44cef3051dba33a600042c7a5bf987">&#9670;&nbsp;</a></span>answer()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCCall::answer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_call_item.html">JCCallItem</a> *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>video</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>接听</p>
<p>调用接口成功会收到 <a class="el" href="class_j_c_call_callback.html#a1ba1c4f09c1f573d9fe2acb5057d6c18">onCallItemUpdate</a> 通知， 另外还有两种情况也会收到通知：1、若收到的是视频呼叫，而本端选择了音频接听 2、若此路通话不是活跃的，会将此路通话设为活跃通话。<br  />
 调用接口失败会收到 <a class="el" href="class_j_c_call_callback.html#a8fb115155d6bc25139a165310069f92b">onCallItemRemove</a> 通知</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">item</td><td><a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象，不能为空，并且本地缓存的通话列表中要包含此对象 </td></tr>
    <tr><td class="paramname">video</td><td>针对视频呼入可以选择以视频接听还是音频接听<ul>
<li>true: 视频接听</li>
<li>false: 音频接听 </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>是否正常调用<ul>
<li>true：正常执行调用流程</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a058fb76428f0a77f4bbbb8670eec2868"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a058fb76428f0a77f4bbbb8670eec2868">&#9670;&nbsp;</a></span>audioRecord()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCCall::audioRecord </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_call_item.html">JCCallItem</a> *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>filePath</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>开启/关闭通话录音</p>
<p>开启通话录音，需要保证没有在录音也没有在录制视频<br  />
 关闭通话录音，需要保证当前通话正在录音</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">item</td><td><a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象，不能为空，并且本地缓存的通话列表中要包含此对象 </td></tr>
    <tr><td class="paramname">enable</td><td>开启关闭录音<ul>
<li>true: 开启录音</li>
<li>false: 关闭录音 </li>
</ul>
</td></tr>
    <tr><td class="paramname">filePath</td><td><b>录音文件的本地保存路径，由用户自行指定，需精确到文件名，例如：C:\Users\86189\Documents\Juphoon\audiorecord\1600422483.wav。</b> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>是否正常调用<ul>
<li>true：正常执行调用流程，会收到 <a class="el" href="class_j_c_call_callback.html#a1ba1c4f09c1f573d9fe2acb5057d6c18">onCallItemUpdate</a> 通知</li>
<li>false：调用失败，不会收到通知 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="ae45d0744f3df39cc2c6dc3bb00bb7354"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae45d0744f3df39cc2c6dc3bb00bb7354">&#9670;&nbsp;</a></span>becomeActive()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCCall::becomeActive </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_call_item.html">JCCallItem</a> *&#160;</td>
          <td class="paramname"><em>item</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>切换活跃通话</p>
<p>调用此方法时，入参 <a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象不是活跃的，则会收到 <a class="el" href="class_j_c_call_callback.html#a1ba1c4f09c1f573d9fe2acb5057d6c18">onCallItemUpdate</a> 通知；若入参 <a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象已是活跃的，则不会收到通知</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">item</td><td>需要变为活跃状态的 <a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>是否正常调用<ul>
<li>true：正常执行调用流程</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a6ba5c96565197a35b847a5d8452cbc66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ba5c96565197a35b847a5d8452cbc66">&#9670;&nbsp;</a></span>call()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCCall::call </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>userId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>video</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_j_c_call_param.html">JCCallParam</a> *&#160;</td>
          <td class="paramname"><em>callParam</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>发起一对一呼叫</p>
<p>若发起的是音频呼叫，需要保证本地不存视频通话，并且本地通话数未达到最大通话数，最大通话数为：<a class="el" href="class_j_c_call.html#a769709c95f34898df619db9374fe78c2">maxCallNum</a> 。<br  />
 若发起的是视频呼叫，需要保证本地不存在通话。<br  />
 发起呼叫成功后，会收到 <a class="el" href="class_j_c_call_callback.html#a2188f777767ca071c145d4a50687ce63">onCallItemAdd</a> 通知</p>
<p>以下两种情况会收到 <a class="el" href="class_j_c_call_callback.html#a8fb115155d6bc25139a165310069f92b">onCallItemRemove</a> 通知：</p><ul>
<li>本端发起视频呼叫时，对方已存在通话</li>
<li>本端发起音频呼叫时，对方已存在视频通话</li>
</ul>
<dl class="section note"><dt>注解</dt><dd>在调用此接口时确保用户的登录状态为已登录</dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">userId</td><td>对方的用户标识，不能为空 </td></tr>
    <tr><td class="paramname">video</td><td>是否视频呼叫<ul>
<li>true: 视频呼叫</li>
<li>false: 音频呼叫 </li>
</ul>
</td></tr>
    <tr><td class="paramname">callParam</td><td>通话参数对象，此参数可为空，详细定义见： <a class="el" href="class_j_c_call_param.html">JCCallParam</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>是否正常调用<ul>
<li>true：正常执行调用流程</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="adcd6dd97b6737909ae0348a0e714d754"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adcd6dd97b6737909ae0348a0e714d754">&#9670;&nbsp;</a></span>enableUploadVideoStream()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCCall::enableUploadVideoStream </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_call_item.html">JCCallItem</a> *&#160;</td>
          <td class="paramname"><em>item</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>开启/关闭视频流发送</p>
<p>通过 <a class="el" href="class_j_c_call_item.html#a783b33cb5105d810444fe789edc7b583">getUploadVideoStreamSelf</a> 来决定开启还是关闭视频流的发送</p><ul>
<li>若 <a class="el" href="class_j_c_call_item.html#a783b33cb5105d810444fe789edc7b583">getUploadVideoStreamSelf</a> 为 true，即已在上传视频流: 关闭视频流发送</li>
<li>若 <a class="el" href="class_j_c_call_item.html#a783b33cb5105d810444fe789edc7b583">getUploadVideoStreamSelf</a> 为 false，即未上传视频流: 开启视频流发送</li>
</ul>
<dl class="section note"><dt>注解</dt><dd>用于视频通话中</dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">item</td><td><a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>是否正常调用<ul>
<li>true：正常执行调用流程，会收到 <a class="el" href="class_j_c_call_callback.html#a1ba1c4f09c1f573d9fe2acb5057d6c18">onCallItemUpdate</a> 通知</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a4b5e8afc43bd12f877e37a97fec2ff7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4b5e8afc43bd12f877e37a97fec2ff7a">&#9670;&nbsp;</a></span>getActiveCallItem()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_j_c_call_item.html">JCCallItem</a>* JCCall::getActiveCallItem </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得当前活跃的通话</p>
<dl class="section return"><dt>返回</dt><dd><ul>
<li><a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象：当前活跃的通话</li>
<li>null：当前没有活跃的通话 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a34e8adf7b93e4943c83b39de5f5675bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a34e8adf7b93e4943c83b39de5f5675bf">&#9670;&nbsp;</a></span>getCallItems()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::list&lt;<a class="el" href="class_j_c_call_item.html">JCCallItem</a>*&gt;* JCCall::getCallItems </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得通话对象列表</p>
<p>当 <a class="el" href="class_j_c_call.html#a769709c95f34898df619db9374fe78c2">maxCallNum</a> &gt; 1 时，可能存在多个音频通话对象</p>
<dl class="section return"><dt>返回</dt><dd>通话对象列表 </dd></dl>

</div>
</div>
<a id="aa6392b58272a396a10d3d857f4704d6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6392b58272a396a10d3d857f4704d6a">&#9670;&nbsp;</a></span>getMediaConfig()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_j_c_call_media_config.html">JCCallMediaConfig</a> JCCall::getMediaConfig </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得当前的媒体参数</p>
<dl class="section return"><dt>返回</dt><dd><a class="el" href="class_j_c_call_media_config.html">JCCallMediaConfig</a> 媒体参数对象 </dd></dl>

</div>
</div>
<a id="ae5de3fe2c6d7f16d95e4c79d7389b133"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae5de3fe2c6d7f16d95e4c79d7389b133">&#9670;&nbsp;</a></span>getStatistics()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* JCCall::getStatistics </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>获得当前通话统计信息</p>
<p>统计信息以Json字符串形式返回，其中包含 "Audio"、"Video"、"Mtp" 三个键值，示例如下：</p>
<p>{</p>
<p>"Audio": "Sent Statistics:                  \r\n  Packets:        1197            \r\n  Lost:           196             \r\n  Lost Ratio:     3               \r\n  Jitter:         23              \r\n  Bitrate:        2.3             \r\n      FEC:        0.0             \r\n   RedNum:        0               \r\nReceived Statistics:              \r\n  Packets:        980             \r\n  Lost:           220             \r\n  Lost Ratio:     0               \r\n  Jitter:         27              \r\n  Bitrate:        1.9             \r\n  EpdRate\/lr\/dc:  0\/0\/0           \r\n  TMos:           4.9             \r\nGeneral statistics:               \r\n  RTT:            146             \r\n  Netw Status:    Good            \r\nConfiguration:                    \r\n  Mic:            VOICE_COMMUNICAT\r\n    Channel Mute: on              \r\n    Global Mute:  off             \r\n    System Mute:  N\/A             \r\n  Spk:            STREAM_VOICE_CAL\r\n    Channel Mute: off             \r\n    Global Mute:  off             \r\n    System Mute:  off             \r\n  Local IP:       N\/A             \r\n  Local Port:     N\/A             \r\n  Remote IP:      N\/A             \r\n  Remote Port:    N\/A             \r\n  RTCP Mux:       N\/A             \r\n  SRTP:           aes \/ aes       \r\n  Codec:          opus            \r\n  Payload:        116             \r\n  Bitrate:        14500           \r\n  Pkt Len:        60              \r\n  Nack:           off             \r\n  RTX:            off             \r\n  FEC\/RED:        on              \r\n  AEC:            on              \r\n    Mode:         Adaptive-Sde    \r\n    HowlSupp:     Auto            \r\n    Sts:          Auto            \r\n  AGC:            on              \r\n    Mode:         Fixed           \r\n    Target:       3               \r\n    Gain:         9               \r\n  Rx AGC:         off             \r\n    Mode:         Fixed           \r\n    Target:       3               \r\n    Gain:         15              \r\n  VAD:            on              \r\n    Mode:         Normal          \r\n  ANR:            on              \r\n    Mode:         High            \r\n  Rx ANR:         off             \r\n    Mode:         Low             \r\n  ARS:            on              \r\n    BR Min:       20.0            \r\n    BR Max:       75.0            \r\n",</p>
<p>"Video": "Sent Statistics:                  \r\n  Packets:        31480           \r\n  Lost:           88              \r\n  Lost Ratio:     1               \r\n  Jitter:         13              \r\n  FPS\/Key-F\/SLI-F:23\/5\/115        \r\n  Resolution:     1280x656[F]     \r\n  Bitrate(Total): 1119\/1500       \r\n    Cdc\/Set:      928\/1041        \r\n    FEC:          317             \r\n    NACK:         0               \r\n    redNum:       0               \r\n    QP:           20              \r\n  SpMos:          3.4             \r\n  PSNR:           42.58           \r\n  EncodeTime:     13              \r\nReceived Statistics:              \r\n  Packets:        5061            \r\n  Lost:           11              \r\n  Lost Ratio:     0               \r\n  Jitter:         19              \r\n  Framerate:      23              \r\n  Resolution:     848x512         \r\n  Bitrate:        428             \r\n  Codec:          H264-SVC        \r\n  PvMos:          4.9             \r\n  DecodeTime:     10              \r\nGeneral Statistics:               \r\n  Capture Res:    1280x656        \r\n  Capture Fr:     23              \r\n  Render Fr:      23              \r\n  RTT:            68              \r\n  Netw Status:    Good            \r\n  CPU Load:       N\/A             \r\nConfiguration:                    \r\n  Capture:        Camera          \r\n  Local IP:       N\/A             \r\n  Local Port:     N\/A             \r\n  Remote IP:      N\/A             \r\n  Remote Port:    N\/A             \r\n  RTCP Mux:       on              \r\n  SRTP:           aes \/ aes       \r\n  Codec:          H264-SVC        \r\n  Payload:        125             \r\n  Bitrate:        800             \r\n  Framerate:      24              \r\n  Resolution:     1280x656        \r\n  FEC:            on|124|123      \r\n  FIR:            on              \r\n  Key Interval:   0               \r\n    Repeat:       0               \r\n  NACK:           on              \r\n  RTX:            on|23:7d|24:79  \r\n  TMMBR:          on              \r\n  RPSI:           on              \r\n  Small NALU:     on              \r\n  ARS:            on              \r\n    BR Min:       50              \r\n    BR Max:       1500            \r\n    FR Min:       1               \r\n    FR Max:       30              \r\n  Res. Ctrl:      on              \r\n  Res. Mode:      0               \r\n  Fr Ctrl:        on              \r\n  CPU Load Ctrl:  off             \r\n    Target:       80              \r\n  Bw Efficient:   off             \r\n  Error Conceal:  off             \r\n  Enhance color:  off             \r\n  Boost bright:   off             \r\n  Boost contrast: off             \r\n  RTP Ext:        CVO|PID|TS      \r\n  Render Name:JssCall527090889344 \r\n",</p>
<p>"Mtp": "SendServerBytes:227\nSendClientTransferBytes:655979\nSendClientP2pBytes:0\n\nLocal:  100.306871245:42575\r\nRemote: 150.65183793:59552\r\n\r\nLastPaths: 121,100\r\n\r\nPath: 100(150.65183793) [tcp]\r\n  Step1:Delay\/Loss(S\/R): 50\/0\/0\r\n  Cost: 377\r\nPath: 100(121.525392306) [tcp]\r\n  Step1:Delay\/Loss(S\/R): 50\/0\/0\r\n  Cost: 384\r\nPath: 160(150.65183793) [udp]\r\n  Step1:Delay\/Loss(S\/R): 59\/0\/0\r\n  Cost: 389** (best: 255)\r\nPath: 282(150.65183793) [tcp]\r\n  Step1:Delay\/Loss(S\/R): 73\/0\/0\r\n  Cost: 428\r\nstop p2p: nattype 4"</p>
<p>}</p>
<dl class="section return"><dt>返回</dt><dd>当前通话统计信息 </dd></dl>

</div>
</div>
<a id="aae536642d3d5c785c2ce7d9275f8653a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae536642d3d5c785c2ce7d9275f8653a">&#9670;&nbsp;</a></span>hold()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCCall::hold </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_call_item.html">JCCallItem</a> *&#160;</td>
          <td class="paramname"><em>item</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>开启/取消呼叫保持</p>
<p>开启呼叫保持后，通话将被挂起。内部会根据 <a class="el" href="class_j_c_call_item.html#a90ee171df63530d4f413fc6f87622368">getHold</a> 来决定开启/取消呼叫保持</p><ul>
<li><a class="el" href="class_j_c_call_item.html#a90ee171df63530d4f413fc6f87622368">getHold</a> 为 true，即呼叫保持状态时: 取消呼叫保持</li>
<li><a class="el" href="class_j_c_call_item.html#a90ee171df63530d4f413fc6f87622368">getHold</a> 为 false，即不是呼叫保持状态时: 开启呼叫保持</li>
</ul>
<dl class="section note"><dt>注解</dt><dd>只针对音频，如果是视频通话则要上层处理视频逻辑</dd></dl>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">item</td><td><a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象，不能为空，并且本地缓存的通话列表中要包含此对象，此对象的通话状态必须为通话中 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>是否正常调用<ul>
<li>true：正常执行调用流程，会收到 <a class="el" href="class_j_c_call_callback.html#a1ba1c4f09c1f573d9fe2acb5057d6c18">onCallItemUpdate</a> 通知</li>
<li>false：调用失败，不会收到通知 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a62d7c7454fae84422579e3a6275af243"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62d7c7454fae84422579e3a6275af243">&#9670;&nbsp;</a></span>mute()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCCall::mute </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_call_item.html">JCCallItem</a> *&#160;</td>
          <td class="paramname"><em>item</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>开启/取消静音</p>
<p>开启后对端将听不到本端的声音。内部会根据 <a class="el" href="class_j_c_call_item.html#af9946e5b7679c2d369a7c8fac18d5d7c">getMute</a> 来决定开启/取消静音</p><ul>
<li><a class="el" href="class_j_c_call_item.html#af9946e5b7679c2d369a7c8fac18d5d7c">getMute</a> 为 true，即静音状态时: 取消静音</li>
<li><a class="el" href="class_j_c_call_item.html#af9946e5b7679c2d369a7c8fac18d5d7c">getMute</a> 为 false，即不是静音状态时: 开启静音</li>
</ul>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">item</td><td><a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象，不能为空，并且本地缓存的通话列表中要包含此对象，此对象的通话状态必须为通话中 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>是否正常调用<ul>
<li>true：正常执行调用流程，会收到 <a class="el" href="class_j_c_call_callback.html#a1ba1c4f09c1f573d9fe2acb5057d6c18">onCallItemUpdate</a> 通知</li>
<li>false：调用失败，不会收到通知 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a1dd4d26b9ba6685b57dcbcf698a021c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1dd4d26b9ba6685b57dcbcf698a021c6">&#9670;&nbsp;</a></span>sendDtmf()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCCall::sendDtmf </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_call_item.html">JCCallItem</a> *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___xE4_xB8_x80_xE5_xAF_xB9_xE4_xB8_x80_xE9_x80_x9A_xE8_xAF_x9D_xE6_xA8_xA1_xE5_x9D_x97.html#ga78f6d8931af25ea4302fcee98ae292d7">JCCallDtmfValue</a>&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>发送DTMF信息</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">item</td><td>需要发送数据的 <a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象 </td></tr>
    <tr><td class="paramname">value</td><td><a class="el" href="group___xE4_xB8_x80_xE5_xAF_xB9_xE4_xB8_x80_xE9_x80_x9A_xE8_xAF_x9D_xE6_xA8_xA1_xE5_x9D_x97.html#gga78f6d8931af25ea4302fcee98ae292d7a287ea7993cec0c6e0ff94a58a34813e6">DTMF值</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>是否正常调用<ul>
<li>true：正常执行调用流程</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a94e37abb045b901e1703b7534f4cc379"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94e37abb045b901e1703b7534f4cc379">&#9670;&nbsp;</a></span>sendMessage()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCCall::sendMessage </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_call_item.html">JCCallItem</a> *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>content</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>通过通话建立的通道发送数据</p>
<p>此接口调用成功后，消息接收方会收到 <a class="el" href="class_j_c_call_callback.html#afb8281abd54bc8c18b77aadfe234a882">onMessageReceive</a> 回调，通过此回调可以获取消息的文本类型和文本内容</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">item</td><td>需要发送数据的 <a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象 </td></tr>
    <tr><td class="paramname">type</td><td>文本消息类型，用户可以自定义，例如text，xml等 </td></tr>
    <tr><td class="paramname">content</td><td>文本内容 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>是否正常调用<ul>
<li>true：正常执行调用流程</li>
<li>false：调用失败 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="a168fd884512bfd5451ffa5fac83c598b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a168fd884512bfd5451ffa5fac83c598b">&#9670;&nbsp;</a></span>term()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCCall::term </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_call_item.html">JCCallItem</a> *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___xE4_xB8_x80_xE5_xAF_xB9_xE4_xB8_x80_xE9_x80_x9A_xE8_xAF_x9D_xE6_xA8_xA1_xE5_x9D_x97.html#gae957ca110a61bcd44a7fd33cda162887">JCCallReason</a>&#160;</td>
          <td class="paramname"><em>reason</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>description</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>挂断</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">item</td><td><a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象，不能为空，并且本地缓存的通话列表中要包含此对象 </td></tr>
    <tr><td class="paramname">reason</td><td><a class="el" href="group___xE4_xB8_x80_xE5_xAF_xB9_xE4_xB8_x80_xE9_x80_x9A_xE8_xAF_x9D_xE6_xA8_xA1_xE5_x9D_x97.html#gae957ca110a61bcd44a7fd33cda162887">挂断原因</a> </td></tr>
    <tr><td class="paramname">description</td><td>挂断描述 </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>是否正常调用<ul>
<li>true：正常执行调用流程，挂断结果通过 <a class="el" href="class_j_c_call_callback.html#a8fb115155d6bc25139a165310069f92b">onCallItemRemove</a> 通知</li>
<li>false：调用失败，不会收到 <a class="el" href="class_j_c_call_callback.html#a8fb115155d6bc25139a165310069f92b">onCallItemRemove</a> 通知 </li>
</ul>
</dd></dl>

</div>
</div>
<a id="aca5e69754bbc89fa94916dcfebfe084c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca5e69754bbc89fa94916dcfebfe084c">&#9670;&nbsp;</a></span>updateMediaConfig()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void JCCall::updateMediaConfig </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_call_media_config.html">JCCallMediaConfig</a>&#160;</td>
          <td class="paramname"><em>mediaConfig</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>更新媒体参数</p>
<p>可以通过该方法更新媒体参数以适应不同设备类型，比如视频发送/接收的宽高、音频/视频的最大最小码率等。需要在调用 <a class="el" href="class_j_c_call.html#a6ba5c96565197a35b847a5d8452cbc66">call</a> 接口发起呼叫前进行设置。</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">mediaConfig</td><td><a class="el" href="class_j_c_call_media_config.html">JCCallMediaConfig</a> 媒体参数对象，通过 <a class="el" href="class_j_c_call_media_config.html#a7b070af1f94a81a7063f1d073f73459d">generateByMode</a> 方法创建 </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a21823c0309710331f4cad2aee7429c37"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a21823c0309710331f4cad2aee7429c37">&#9670;&nbsp;</a></span>videoRecord()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool JCCall::videoRecord </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_j_c_call_item.html">JCCallItem</a> *&#160;</td>
          <td class="paramname"><em>item</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>enable</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>remote</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>filePath</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>bothAudio</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>开启/关闭视频通话录制</p>
<p>开启视频录制，需要保证 1、没有在录音 2、若是录制远端视频，要保证没有在录制远端视频，并且远端在上传视频流 3、若是录制本端视频，要保证没有在录制本端视频，并且本端在上传视频流。<br  />
 关闭视频录制，需要保证 1、若是关闭远端视频，要保证正在录制远端视频 2、若是关闭本端视频，要保证正在录制本端视频</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramname">item</td><td><a class="el" href="class_j_c_call_item.html">JCCallItem</a> 对象，不能为空，并且本地缓存的通话列表中要包含此对象 </td></tr>
    <tr><td class="paramname">enable</td><td>是否开启视频通话录制<ul>
<li>true: 开启</li>
<li>false: 关闭 </li>
</ul>
</td></tr>
    <tr><td class="paramname">remote</td><td>是否录制远端视频源<ul>
<li>true: 录制远端视频</li>
<li>false: 录制本端视频 </li>
</ul>
</td></tr>
    <tr><td class="paramname">width</td><td>录制视频宽像素 </td></tr>
    <tr><td class="paramname">height</td><td>录制视频高像素 </td></tr>
    <tr><td class="paramname">filePath</td><td><b>录制视频文件的本地保存路径，由用户自行指定，需精确到文件名及格式，例如：C:\Users\86189\Documents\Juphoon\videoRecord\1600422531.mp4。</b> </td></tr>
    <tr><td class="paramname">bothAudio</td><td>是否录制两端音频<ul>
<li>true: 录制两端音频</li>
<li>false: 录制视频端音频。也就是说 remote 为 true 就录制远端音频，remote 为 false 录制本端音频。 </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>是否正常调用<ul>
<li>true：正常执行调用流程，会收到 <a class="el" href="class_j_c_call_callback.html#a1ba1c4f09c1f573d9fe2acb5057d6c18">onCallItemUpdate</a> 通知</li>
<li>false：调用失败，不会收到通知 </li>
</ul>
</dd></dl>

</div>
</div>
<h2 class="groupheader">类成员变量说明</h2>
<a id="a769709c95f34898df619db9374fe78c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a769709c95f34898df619db9374fe78c2">&#9670;&nbsp;</a></span>maxCallNum</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int JCCall::maxCallNum</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>最大通话数，默认值为1</p>
<dl class="section note"><dt>注解</dt><dd>当通话数到达最大通话数后，调用 <a class="el" href="class_j_c_call.html#a6ba5c96565197a35b847a5d8452cbc66">call</a> 接口呼出会失败，收到来电会自动拒绝 </dd></dl>

</div>
</div>
<a id="aadc33d7d6a0e672613cb66392a35547d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aadc33d7d6a0e672613cb66392a35547d">&#9670;&nbsp;</a></span>termWhenNetDisconnected</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool JCCall::termWhenNetDisconnected</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>当音频接收网络状态为无网络时是否挂断，默认为不挂断</p>
<p>也就是 <a class="el" href="class_j_c_call_item.html#ac6d75d4d108dd1796e65ed0742909bd8">getAudioNetReceiveStatus</a> 状态为 <a class="el" href="group___xE4_xB8_x80_xE5_xAF_xB9_xE4_xB8_x80_xE9_x80_x9A_xE8_xAF_x9D_xE6_xA8_xA1_xE5_x9D_x97.html#gga2000fe0d5d34eb6adb6f58efcf2ff135a982c00d6e52f40a4946358aa7df7a33f">JCCallNetStateDisconnected</a> 时是否挂断</p>
<ul>
<li>true: 挂断</li>
<li>false: 不挂断 </li>
</ul>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>SDK/all/include/<a class="el" href="_j_c_call_8h_source.html">JCCall.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
制作者 &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
